package com.itlong.cloud.miniprogram.service;

import com.itlong.cloud.POJO.DTO.app.AppUserRegisterDTO;
import com.itlong.cloud.POJO.PO.AppUserInfoPO;
import com.itlong.cloud.POJO.VO.MessageVO;
import com.itlong.cloud.POJO.VO.app.AppUserCacheVO;
import com.itlong.cloud.POJO.VO.app.AppUserOwnProjectVO;
import com.itlong.cloud.POJO.VO.miniprogram.MiniProgramLoginVO;

import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * <desc>
 *     微信小程序的登录版块服务层接口
 * </desc>
 *
 * @createDate 2018/11/24
 */
public interface IMiniProgramLoginService {

    /**
     * <desc>
     *      根据手机号进行注册或登录
     * </desc>
     * @param phoneNo  手机号
     * @return
     * @author Juguang.S
     * @createDate 2018/11/24
     */
    AppUserCacheVO login(String phoneNo,String openId,String unionId) throws Exception;

    /**
     * <desc>
     *      校验该用户是否被禁用
     * </desc>
     *
     * @param phoneNo  手机号
     * @return
     * @author Juguang.S
     * @createDate 2019/01/05
     */
    Integer getUserStatus(String phoneNo) throws Exception;

    /**
     * <desc>
     *     退出登录
     * </desc>
     *
     * @param token
     * @return
     * @author Juguang.S
     * @createDate 2018/11/24
     */
    void loginOut(String token) throws Exception;

    /**
     * <desc>
     *      从缓存获取用户信息
     * </desc>
     *
     * @param token
     * @return
     * @author Juguang.S
     * @createDate 2018/11/26
     */
    AppUserCacheVO retrieve(String token);

    /**
     * <desc>
     *     微信小程序登录后缓存用户信息
     * </desc>
     * @param appUserCacheVO
     * @return
     * @author Juguang.S
     * @createDate 2018/11/26
     */
    boolean loginCacheUserVO(AppUserCacheVO appUserCacheVO) throws Exception;

    /**
     * <desc>
     *      从缓存获取用户信息 用于校验token是否过期
     * </desc>
     *
     * @param token
     * @return
     * @author Juguang.S
     * @createDate 2020/03/10
     */
    AppUserCacheVO retrieveByCheckToken(String token);

}
